home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Grab Bag
/
Shareware Grab Bag.iso
/
001
/
prcmfixs.arc
/
PRM24PAT.ARC
/
PRM242.PAT
Wrap
Text File
|
1986-12-30
|
2KB
|
47 lines
Article 138 of comp.sys.ibm.pc:
Path: zen!ucbcad!ames!sri-spam!rutgers!husc6!panda!enmasse!drilex!axiom!linus!gwr
From: gwr@linus.UUCP (Gordon W. Ross)
Newsgroups: comp.sys.ibm.pc
Subject: PROCOMM with DOS 3.2 (patch)
Message-ID: <11@linus.UUCP>
Date: 18 Nov 86 15:48:39 GMT
Reply-To: gwr@linus.UUCP (Gordon W. Ross)
Distribution: world
Organization: The Mitre Corporation
Lines: 40
The following is a patch which will make PROCOMM 2.42
(from Datastorm Technologies, Inc.) behave with DOS 3.2.
When running with DOS 3.2, CTRL-BREAK causes PROCOMM to
hang the system, with last words "Stack Overflow."
Since the problem only appears with DOS 3.2, I suspected that
the stack swapping implemented in DOS 3.2 might be the cause. Using a
resident debugger, I captured the keyboard break interrupt, and
discovered a problem with its interrupt handler.
Upon entry to the keyboard break interrupt handler, the stack
is checked for overflow by comparing the the stack pointer with both
upper and lower limits. The limits used assume that PROCOMM's stack
is the current stack, and fail because DOS has substituted a new stack
in response to the hardware interrupt from the keyboard. The DOS
stack has plenty of room, but fails the limit check because it is a
DOS sized stack and not PROCOMM's own stack.
The stack overflow error routine is responsible for actually
hanging the system, but it is easiest to disable the stack checking
in the interrupt handler so it won't enter the error routine. Also,
it is sufficient to remove only the high limit check because the low
limit is always zero. (If the SP gets to zero, the system is proably
dead anyway.) I disabled the high limit check with a one byte patch:
rename procomm.exe procomm.bin
debug procomm.bin
e 8686 0
w
q
rename procomm.bin procomm.exe
The above turns a JMP STACK_OVERFLOW_ERROR (or whatever) into
a JMP $+2, which happens to be the succesful exit code.
There is no reason to apply this patch if you use DOS 3.